package main

import (
	"context"
	"fmt"

	"github.com/olivere/elastic/v7"
)

func main() {
	// 初始化一个连接
	url := "http://120.24.67.46:9200"
	// 这里必须将sniff设置为false, 因为使用olivere/elastic连接elasticsearch时, 发现连接地址命名输入的时候是网址
	// 但是连接时会自动转换成内网地址或者docker中的ip地址, 导致服务连接不上
	client, err := elastic.NewClient(elastic.SetURL(url), elastic.SetSniff(false))
	if err != nil {
		// Handle error
		panic(err)
	}

	q := elastic.NewMatchQuery("address", "广场")
	res, err := client.Search().Index("account").Query(q).Do(context.Background())
	if err != nil {
		// Handle error
		panic(err)
	}

	fmt.Println("总条数 ===> ", res.Hits.TotalHits.Value)
	fmt.Println("data ===> ", res.Hits.Hits)
	for _, value := range res.Hits.Hits {
		fmt.Println("string(value.Source)", string(value.Source))

		if jsonData, err := value.Source.MarshalJSON(); err != nil {
			panic(err)
		} else {
			fmt.Println("string(jsonData)", string(jsonData))
		}
	}
}
